package com.warm.base.design;

/**
 * @Date: 2019/11/21 11:37
 * @Author: LChuang
 * @Description:
 */
public class DesignPrinciple {

    /**
     * design pattern principle:
     *  1. 单一职责(SRP: Single responsibility principle)
     *      类 -> 单一职责 -> 保证高内聚、低耦合
     *
     *  2. 开闭原则()
     *      对扩展开放, 对修改关闭
     *
     *  3. 里氏替换
     *      子类可以替换父类的位置.并且程序的功能不受影响.
     *      子类可以扩展父类的功能，但不能改变父类原有的功能
     *          子类可以实现父类的抽象方法, 但不能覆盖父类非抽象方法
     *          子类可以增加自己特有方法, 尽量避免子类的个性
     *      尽量把父类设计为抽象类或接口
     *
     *  4. 接口隔离(ISP)
     *      接口尽可能的细粒度化
     *      客户端不应该依赖它不需要的接口。
     *      一个类对另一个类的依赖应该建立在最小的接口上。
     *
     *  5. 依赖倒置
     *      高层模块（稳定）不应该依赖低层模块（变化），二者都依赖抽象（稳定）
     *      抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)
     *
     *  6. 迪米特法则
     *      最少知识原则
     *      从被依赖者的角度来说：只暴露应该暴露的方法或者属性，即在编写相关的类的时候确定方法/属性的权限
     *      从依赖者的角度来说，只依赖应该依赖的对象
     */

    /**
     *   创建型 --> 创建对象
     *   结构型 --> 处理类或对象的组合
     *   行为型 --> 描述对类或对象怎样交互和怎样分配职责
     */
}
